package main

import "fmt"

// 如果 slice 在声明之后没有使用复合字面值或内置的 make 函数进行初始化，那么它的值就是 nil。
// 幸运的是，range、len、append 等内置函数都可以正常处理值为 nil 的 slice。
func main() {
	var soup []string
	fmt.Println(soup == nil)

	for _, ingredient := range soup {
		fmt.Println(ingredient)
	}

	fmt.Println(len(soup))

	soup = append(soup, "onion", "carrot", "celery")
	fmt.Println(soup)

	// 空 slice
	t := make([]string, 0, 0)
	// 空 slice 并不是 nil
	fmt.Println(t == nil)
}
